/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 言初
 * Date: 2023-12-25
 * Time: 22:14
 */
// 这个最大字段和的最小值为0，
//当最终出现的是比0小的最大字段和的时候就应该返回的是0
//


import java.util.Scanner;


public class Main6 {
    public static int func(int[] arr,int left,int right){
        int[] ret=new int[arr.length];
        ret[0]=arr[0];
        for(int i=1;i<arr.length;i++){
            ret[i]=ret[i-1]+arr[i];
            if(ret[i]<arr[i]){
                ret[i]=arr[i];
            }
        }

        int m=0;
        for(int i=1;i<arr.length;i++){
            if(ret[i]>m){
                m=ret[i];
            }
        }

        return m;
    }


    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] arr=new int[n];
        for(int i=0;i<n;i++){
            arr[i]=sc.nextInt();
        }
        int d=func(arr,0,n-1);
        System.out.println(d);
    }
}






